home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus Leser 19 / Amiga Plus Leser CD 19.iso / Sound / abcm2ps-3.1.13 / features.txt < prev    next >
Text File  |  2002-11-17  |  18KB  |  497 lines

  1. Features in abcm2ps 3.1.10 (J.F. Moine, October 2002)
  2. =====================================================
  3.  
  4. ----- voice overlap -----
  5.  
  6. Sometimes, some extra notes need to appear at the same time on a staff.
  7. The Taral's proposal is to use the character '&' (ampersand) for this
  8. purpose. Here is the original mail:
  9.  
  10.     & and && operators:
  11.         The & operator will be used for splits into 2 voices in a single
  12.         measure, thus:
  13.         |F2A2Bc&F2c2bc|
  14.         The && operator will support direct overlay of two lines of music,
  15.         similar to the & operator, but without forcing stem direction.
  16.  
  17.     (&...&...) and (&&...&&...) operators:
  18.         These are similar to the & and && operators, but operate on multiple
  19.         measures of music, thus:
  20.         |!f!(&GG<G|GG F=E| E2  E(_D/E)|_D D  C      D |C4- |C
  21.              &DC<C|CC_D C|=B,2_B,B,   |_A,A,(G,/A,/)B,|F,4-|F,)zzD=E|
  22.         (For &&, this can be extended to N lines, e.g.
  23.         (&&...&&...&&...&&...))
  24.  
  25. Note 1: As the last syntax raises a problem with slurs, abcm2ps does not
  26.     handle slurs inside a '(&...&...)' construct.
  27. Note 2: The difference between '&' and '&&' does not work yet.
  28.  
  29. ----- staff break -----
  30.  
  31. For purpose of original clef indication (on the left side), or for
  32. a coda, a staff break may be inserted as the pseudo comment:
  33.     %%staffbreak <unit>
  34. The <unit> gives the width of the break (in points, inches or cm).
  35. As a side effect, when the width is bigger than 0.5 cm, the
  36. left side of the staff system is redrawn.
  37. When used in a multi-voice tune, a staff break must be inserted
  38. in each voice.
  39.  
  40. ----- multi-column -----
  41.  
  42. Music or text may be drawn on different part of the sheet.
  43. The pseudo-comment '%%multicol start' saves the current vertical
  44. position and the left and right margins. Then, these margins may
  45. be changed to print music or text.
  46. The pseudo '%%multicol new' resets the vertical offset at the
  47. place of the previous '%%multicol start', and restores the left and
  48. right margins.
  49. To restart normal drawing, the pseudo '%%multicol end' restores
  50. the left and right margins, and skips down to a safe place.
  51. An example of this feature may be found in 'sample3.abc'.
  52.  
  53. ----- slurs in grace notes -----
  54.  
  55. There is normally a slur on the grace notes. To remove it, either
  56. call abcm2ps with the option '-G', or have a format or pseudo-
  57. comment 'graceslurs no'.
  58.  
  59. ----- measure numbering -----
  60.  
  61. Measure numbering may be indicated:
  62.  
  63.     - on the command line with the options '-j' or '-k'.
  64.       The starting measure number is set by '-f'.
  65.  
  66.     - in format files by 'measurenb', 'measurebox' and 'measurefirst'.
  67.  
  68.     - in tune by the pseudo-comments '%%measurenb', '%%measurebox' and
  69.       '%%measurefirst'.
  70.  
  71. In a tune, the measure number may set to an explicit value using:
  72.  
  73.    %%setbarnb <value>
  74.  
  75.  
  76. ----- ABC syntax extensions -----
  77.  
  78. Grace notes may appear before any symbol and may contain chords.
  79. Their note lengths are handled. The unit note length is not tied
  80. to L: (or M:). Instead, for compatibility, it is:
  81.     - a semi-quaver for a single note and a demi-semi-quaver for
  82.       many notes in standard tunes,
  83.     - a demi-demi-semi-quaver in bagpipe tunes.
  84. Grace notes greater than crotchets are drawn as crotchets.
  85.  
  86. The decorations (dynamics, accents, ..) are either indicated by
  87. '!decoration_name!' (or a single letter - see 'U:') before the notes
  88. or in a separate decoration line starting with 'd:' (both may be
  89. mixed).
  90. In the decoration lines, as in the lyric lines ('w:'), '|' skips to
  91. the next bar and '*' skips one note. Note that, in such lines, you
  92. cannot set decorations on bars and rests.
  93.  
  94. Measure repeat is indicated by a slash or two ('/' or '//' between 2 bars).
  95.  
  96. Time signatures may have a single number (ex: 'M:2').
  97.  
  98. Repeat bars may contain a string of digits, '-' (hyphen), ',' (comma)
  99. or '.' (dot), or even a free string, instead of only '1' or '2'. Ex:
  100.     |: ... [1,3 ... :|2,4-6 :|["last time" ...
  101. (note that a '[' is needed before the free string - the string may be
  102. empty)
  103.  
  104. Multiple repeat indications (|:: .. ::|) are accepted but not displayed.
  105.  
  106. Multimeasure rests are indicated by 'Z' followed by the number of
  107. measures.
  108.  
  109. In guitar chords, the characters '#', 'b' and '=' are displayed
  110. as sharps, flats and natural signs. To inhibit this feature,
  111. either set the format parameter 'freegchord' to 1, or use a
  112. position flag (^, _, <, > or @).
  113.  
  114. Invisible bars are indicated by '[]' or '[|]', and dashed bars by
  115. a single ':'.
  116.  
  117. Invisible rests are indicated by 'x'.
  118.  
  119. 'y' adds some space between symbols (BarFly extension).
  120.  
  121. The Q field may contain a text that is written before the tempo
  122. definition. The tempo itself may be omitted.
  123.  
  124. The following decorations are added: !slide!, !fp!, !cresc!, !decresc!,
  125. !mp!, !dimin!, !turnx!, !invertedturn!, !invertedturnx!, !arpeggio!,
  126. !trill(!, !trill)!.
  127. The !slide! decoration is assigned to the letter 'J'.
  128.  
  129. Acciaccatura (short appogiattura) are indicated by a '/' starting a grace
  130. note sequence (one note only - ex: {/B}c).
  131.  
  132. Multiple lines of guitar chord are normally indicated by separate
  133. quoted strings appearing before a same note (or rest or bar). They may
  134. also be indicated by '\n', ';' or a new line inside the quoted string.
  135. Ex:
  136.     "G3""4"G "G3\n4"G "G3;4"G "G3
  137.     4"G
  138.  
  139. A note length starting with '0' (zero) indicates a stemless black note
  140. (the note length must be a crotchet).
  141.  
  142. 'M:none' indicates there is no key signature.
  143.  
  144. The header field 'X:' may be ommited: a new tune may start directly on the
  145. first 'T:'.
  146.  
  147. The note length may be divided by many '/' ('A///' is the same as 'A/8').
  148.  
  149.  
  150. ----- Clef specification -----
  151.  
  152. A clef may be provided in' K:' and 'V:'. The general syntax is:
  153.  
  154.     [clef=]<clef type>[<line number>][+8 | -8]
  155.  
  156. - 'clef=' starts the clef definition. It may be omitted in K: or V: when
  157.   the clef type is a clef name.
  158.  
  159. - <clef type> defines the clef type (indeed :). It may be:
  160.  
  161.   - a note pitch (same as a note in a tune).
  162.     The note may be only 'G' (trebble clef), 'C' (alto clef) or 'F'
  163.     (bass clef).
  164.     The pitch indicates what note is tied to the clef line number.
  165.  
  166.   - a clef name.
  167.     This is a more user-friendly way to define the note pitch. The standard
  168.     equivalences are:
  169.         treble        G
  170.         alto / tenor    C
  171.         bass        F,
  172.  
  173.     When abcm2ps is compiled with the option CLEF_TRANSPOSE, the definitions
  174.     are abc2ps compliant:
  175.         treble        G
  176.         alto / tenor    c
  177.         bass        f
  178.  
  179. - <line number> indicates on which staff line the base clef is written.
  180.   Defaults values are:
  181.         G / treble    2
  182.         C / alto    3
  183.         tenor        4
  184.         F / bass    4
  185.  
  186. - '+8' or '-8' draws '8' above or below the staff.
  187.  
  188. When no clef is specified, clef changes are automatically inserted
  189. when needed (only 'bass' or 'treble').
  190.  
  191.  
  192. ----- Multi voice support -----
  193.  
  194. Have a look at the file voices.abc for examples.
  195.  
  196. The voices are defined in the header or in the tune by:
  197.  
  198.     V:<name> <voice definitions>
  199.  
  200. where <name> is a word with any letter or digit. When in the tune
  201. body, the next notes refer to this voice until a new 'V:' is found.
  202. The <voice definition> may contain:
  203.     - 'clef=..' (see above)
  204.     - 'name="voice name"' or 'nm="voice name"'
  205.       The voice name is printed on the left of the first staff
  206.       only.
  207.     - 'subname="voice subname"' or 'snm="voice subname"'
  208.       The voice subname is printed on the left of all staves but
  209.       the first one.
  210.     - 'merge'
  211.       The voice goes in the same staff as the previous one.
  212.     - 'up' or 'down'
  213.       Force the stem direction for the voice.
  214.     - the other definitions are ignored.
  215.  
  216. Normally, each voice goes on a separate staff. A pseudo-comment may
  217. appear in the tune to tell on which staves the voices go. Format is:
  218.  
  219.     %%staves <definition>
  220.  
  221. The definition must contain all the voice names with any
  222. pair of '[]', '{}' and '()':
  223. - when not enclosed by special characters, the voices go on separate
  224.   staves.
  225. - when enclosed by brackets, a bracket is displayed at the beginning
  226.   of each line.
  227. - when enclosed by braces, the voices go on a single couple of staves
  228.   (keyboard score). There cannot be more than 4 voices between the
  229.   braces.
  230. - when enclosed by parenthesis, the voices go on the same staff.
  231.  
  232. The character '|' (bar) may appear between the voice names in which case
  233. measure bars are not drawn between the associated staves.
  234.  
  235. When this pseudo-comment appears inside a tune, the postscript generation
  236. is restarted as if there was a new tune.
  237.  
  238. This program is normally compatible with abc2ps except for automatic
  239. clef handling: when no clef is indicated, the program tries to set
  240. either treble or bass clef according to the notes height.
  241.  
  242. New in abcm2ps-2.5.5: abcm2ps now accepts the BarFly voice definition
  243. in tune (V:x <notes>, i.e. voice + notes on the same line).
  244.  
  245.  
  246. ----- Indentation -----
  247.  
  248. The first line of the tunes may be indented specifying either '-I xx'
  249. at the command line, or '%%indent xx' in the abc file. 'xx' may be
  250. given in cm, in or pt (see 'Output formatting' below).
  251.  
  252.  
  253. ----- Features removed from abc2ps-1.2.4 -----
  254.  
  255. The scale is global (it was restricted to the music part in abc2ps
  256. - this is compatible with 'yaps', and surely with other ABC packages).
  257.  
  258. The characters '\\' don't do a line break anymore.
  259.  
  260. In landscape format, the values of 'pagewidth' and 'pageheight' are
  261. internally exchanged, so there is no need to set them explicitely.
  262.  
  263. The format 'staffwidth' is obsolete. Better use 'pagewidth'.
  264.  
  265. Clef indications (in K: or V:) do not change the note pitches.
  266.  
  267. The parser has been rewritten and follows more strictly the ABC draft
  268. (1.7.3 - date 199/06/23).
  269.  
  270. Tune selection has been simplified (only '-e').
  271.  
  272.  
  273. New features in abc2ps 1.2.4 (M. Methfessel, Feb. 1997)
  274. =======================================================
  275.  
  276. Please also have a look at file newfeatures.abc, which 
  277. demonstrates many of these points. 
  278.  
  279.  
  280. ----- Bass clef -----
  281.  
  282. The bass clef is selected by appending the word "bass" to the
  283. key specification. eg. "K:G bass".
  284.  
  285. For in-line clef changes, use an in-line specification such as
  286. [K:G bass]. If the key itself does not change, it is enough to write
  287. [K:bass] and similarily [K:treble].
  288.  
  289. Added: [K:alto] makes the alto (viola or C) clef.
  290.  
  291.  
  292. ----- Vocals -----
  293.  
  294. Aligned lyrics under the staff are specified using a line directly
  295. below the staff, starting with "w:". For example:
  296.  
  297.    edc2 edc2 | 
  298.    w: Three blind mice, three blind mice
  299.  
  300. Each blank-delimited word in the "w:" line is associated with
  301. one note, in sequence. The following special symbols are available
  302. to modify this behaviour:
  303.  
  304.    *  skips one note
  305.    -  split a word into two syllables, associated with two notes,
  306.       with '-' drawn between them
  307.    |  tabs forward to the next bar line.
  308.    ~  is drawn as a space, but contracts words to be written under
  309.       one note. That is, "hey~ho" gives two words under one note.
  310.    _  draws a thin "underscore" from the previous note to this one.
  311.  
  312. For more than one line of lyrics, just use several w: lines.
  313. To draw a '-' without breaking the word there, escape it as "\-".
  314.  
  315. If a word starts with a digit, this is interpreted as numbering of a
  316. stanza and is pushed forward a bit. In other words, use something like 
  317.    w: 1.~~Three blind mice 
  318. to put a number before "Three".
  319.  
  320.  
  321. ----- Writing text between the music -----
  322.  
  323. This can be done using pseudocomments in three ways. First:
  324.  
  325. %%text This is a line of text.
  326.  
  327. writes one line into the output. Second, 
  328.  
  329. %%center This is another line of text.
  330.  
  331. again writes one line, but centers it. Finally,
  332.  
  333. %%begintext
  334. %%First line of text
  335. %%Second line
  336. %%And yet another line.
  337. %%endtext
  338.  
  339. will write a block of several lines. To avoid conflict with other
  340. programs, the text lines themselves are (optionally) prefaced with %%.
  341.  
  342. Statement "%%begintext" can be  given a parameter to determine 
  343. how the output is done, namely: 
  344.  
  345. %%begintext obeylines      keeps lines as they are (default)
  346. %%begintext fill           puts in own linebreaks to fill the line
  347. %%begintext justify        puts in own breaks and aligns right margin
  348. %%begintext skip           skips the whole block, no output.
  349.  
  350. For "fill" and "justify", the program has to estimate the number of
  351. lines needed in the current font, since the typesetting is done
  352. using the PostScript "widthshow" operator by the printer. 
  353. The estimate should be reasonably reliable for Times-Roman, but might 
  354. be more dodgy for some other fonts. Also, note that the Ghostview fonts 
  355. can be quite different than the fonts used by the printer.
  356. Strangely, a 13pt font can be smaller than a 12pt font.
  357.  
  358. An empty line in a block ends a paragraph (see parskipfac below).
  359.  
  360. As with the other pseudocomments (described below), the text is
  361. associated with a specific tune if it is within that tune's block.
  362. In that case, it will only be printed if that tune is selected. 
  363. If the text is outside all tune blocks, it will always be printed.
  364. The exception is if -E is used to to make a separate EPS file for 
  365. each tune. In this case all text outside the blocks is ignored.
  366.  
  367. The font for text output is determined as described below.
  368.  
  369.  
  370. ----- Other pseudocomments which do something -----
  371.  
  372. %%sep        - draws a short centered line as a separator
  373.  
  374. %%sep h1 h2 len    - draws a separator of length len with space 
  375.           h1 above, space h2 below. 
  376.  
  377. %%vskip h    - adds vertical space of height h
  378.  
  379.  
  380. %%newpage [n]    - writes a page break and eventually restarts
  381.           page numbering at n.
  382.  
  383.  
  384. Dimensions can be given in cm, in, or pt, where pt is the default.
  385. Examples:  "%%sep 1cm 1cm 4cm"  or  "vskip 1.5cm".
  386.  
  387.  
  388. ----- Output formating -----
  389.  
  390. The user can now tailor the appearance of the output page.
  391. This is done by setting formating parameters, for example:
  392.  
  393.    pageheight 29cm             % height of page
  394.    pagewidth 7in               % width of page
  395.    leftmargin 1.8cm            % left margin
  396.    titlefont Times-Roman 14    % the font for the title
  397.    titlespace 1cm              % vertical space before the title
  398.    scale 0.9                   % global scale
  399.    staffsep 60pt               % space between staves
  400.  
  401. Use abc2ps -H to see the current values of these parameters.
  402.  
  403. To specify the parameters, there are four levels:
  404.  
  405. 1. By default, a predefined set called "standard" is used.
  406.    With flag -p, an alternative "pretty" set is taken.
  407.    With flag -P, a third set "pretty2" is used.
  408.    Users are encouraged to make their own choices for these styles
  409.    and change the program accordingly (see routines
  410.    set_standard_format, set_pretty_format, set_pretty2_format
  411.    in file format.h).
  412.  
  413. 2. Commands to set the parameters can be grouped into a file
  414.    with extension "fmt", which can then be selected by flag -F.
  415.    For example: there should be a file landscape.fmt in the
  416.    distribution. This changes the page orientation to landscape
  417.    and sets the page height and width accordingly, and also changes
  418.    the title style a bit. To output file scotland.abc in landscape,
  419.    the command is 
  420.       abc2ps scotland.abc -F landscape -o
  421.       
  422. 3. An abc file can contain pseudocomments (%%..) such as:
  423.       %%pagewidth 18cm
  424.       %%titlespace 1.4cm
  425.    Depending on the position, the changes to the style parameters
  426.    are either global for the rest of the file, or local to a single
  427.    tune. The change is global if the line is outside any tune block
  428.    (where a tune block starts with "X:" and ends with a blank line).
  429.    If the pseudocomment is within such a block, the parameter change 
  430.    is only applied for this tune. 
  431.    Note that the program cannot determine if a tune is selected
  432.    before it knows the title, so such a local pseudocomment should
  433.    come after the "T:" line.
  434.    
  435. 4. Some of the command-line flags change the style parameters, eg:
  436.       -s 0.9      (sets the scale)
  437.       -m 2cm      (sets left margin) etc.
  438.    Type "abc2ps -h" for a list of flags.
  439.  
  440. The priorities are in the sequence given above. That is, the ".fmt" 
  441. file overrides the predefined format, pseudocomments overide that,
  442. and a command-line flag overrides everything else.
  443.  
  444.  
  445. Some more details:
  446.  
  447. 1. Format files are searched in the current directory. In config.h,
  448.    the line "#define DEFAULT_FDIR .." can be used to set a default
  449.    directory which is searched whenever a fmt file is not local.
  450.    Flag -D can also be used to specify this default directory.
  451.    (The idea is, even if a PC user only has the executable available,
  452.    he could make something like an alias to get his standard
  453.    fmt directory into the path.)
  454.  
  455. 2. To see the settings for all the parameters, use flag -H.
  456.    When used in conjunction with other flags such as -p, -P, or -F,
  457.    the corresponding parameters are shown. If you redirect the
  458.    output to a file and edit out the header line, you immediately
  459.    have a prototype fmt file which specifies all the parameters.
  460.  
  461. 3. Dimensions can be specified either as pt, cm, or in. Default is pt.
  462.    So, "%%pagewidth 30" will lead to very short lines!
  463.  
  464. 4. Pseudocomments which are not recognized are ignored silently.
  465.    The idea is that other program can define their own. 
  466.    It also means that when things frustratingly don't seem to work,
  467.    the reason might be a spelling mistake.
  468.  
  469. 5. Because ISO fonts are needed for special characters and
  470.    accents, all fonts must be known when the header of the PS file
  471.    is written. The program tries to be as clever as it can
  472.    about this, but a font might be undefined if it is invoked
  473.    for the first time further down in a file. For this reason, 
  474.    a line like this can be put into the fmt file:
  475.  
  476.       font Palatino-Bold
  477.  
  478.    or alternatively at the top of the abc file:
  479.  
  480.       %%font Palatino-Bold
  481.  
  482.    Either of these will define the corresponding ISO font in the header.
  483.    To make things even easier, the program always looks for a file
  484.    "fonts.fmt" and loads it if it exists. So, the often-used fonts
  485.    can be defined there once and for all.
  486.    
  487. 6. The default page dimensions are set by defines in abc2ps.h
  488.    and then used in format.c to initialize the predefined formats.
  489.    Change these if the standard paper is not US_LETTER
  490.    The relevant lines in abc2ps.h are these:
  491.  
  492. #define PAGEHEIGHT    (11.0 * IN)
  493. #define PAGEWIDTH    (8.5 * IN)
  494.  
  495. 7. A line consisting of the word "end" in a fmt file skips the
  496.    rest of the file.
  497.